package com.cuhk.common.valid;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

// 自定义的注解模仿@NotBlank注解编写
// 要携带三个属性
// 分别是: 1. 不满足注解约束时报错信息message; 2. 分组校验时的分组指定数组 groups, 3.

@Documented
@Constraint(validatedBy = {ListValueConstraintValidator.class})
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
// 标记这个注解的范围是运行时的
@Retention(RUNTIME)
public @interface ListValue {

    String message() default "{com.cuhk.common.valid.ListValue.message}";

    Class<?>[] groups() default { };

    Class<? extends Payload>[] payload() default { };

    int[] values() default {};
}
